package com.example.k8s.hello.boot.oss.service;

import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

public interface IOssService {

    /**
     * 创建文件分组
     * @param bucket
     */
    void createBucket(String bucket);

    /**
     * 删除文件分组
     * @param bucket
     */
    void deleteBucket(String bucket);

    /**
     * 上传文件
     * @param file   待上传的文件
     * @param bucket 文件分组
     * @return 文件路径
     */
    String uploadFile(MultipartFile file, String bucket);

    /**
     * 上传Base64图片
     * @param base64Image Base64图片
     * @param bucket      图片分组
     * @return 文件路径
     */
    String uploadBase64Image(String base64Image, String bucket);

    /**
     * 删除文件
     * @param name   文件地址
     * @param bucket 文件分组
     */
    void deleteObject(String name, String bucket);

    /**
     * 下载缩略图信息
     * @param name   图片地址
     * @param bucket 图片分组
     */
    void downloadThumbnail(String name, String bucket, int targetWidth, int targetHeight, HttpServletResponse response);

    /**
     * 编码Base64图片
     * @param name
     * @param bucket
     * @return
     */
    String encodeBase64Image(String name, String bucket);

    /**
     * 下载水印图片
     * @param name
     * @param bucket
     * @return
     */
    void downloadWatermark(String name, String bucket, HttpServletResponse response);

    /**
     * 文件下载
     * @param name
     * @param bucket
     * @param response
     */
    void download(String name, String bucket, HttpServletResponse response);

    List<String> listBuckets();

    List<String> listObjects(String bucket);

    void deleteObjects(String bucket, List<String> objects);
}
